#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<queue>
using namespace std;
//class Solution {
//public:
//    vector<string> letterCombinations(string digits) {
//        vector<string> combinations;
//        if (digits.empty()) {
//            return combinations;
//        }
//        vector<string> phoneMap = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
//        string combination;
//        backtrack(combinations, phoneMap, digits, 0, combination);
//        return combinations;
//    }
//
//    void backtrack(vector<string>& combinations, const vector<string>& phoneMap,
//        const string& digits, int index, string& combination) {
//        if (index == digits.length()) {
//            combinations.push_back(combination);
//        }
//        else {
//            char digit = digits[index];
//            string letters = phoneMap[digit - '0'];
//            for (char letter : letters) {
//                combination.push_back(letter);
//                backtrack(combinations, phoneMap, digits, index + 1, combination);
//                combination.pop_back();
//            }
//        }
//    }
//};


//class Solution {
//public:
//    void telepthone(string& digits, vector<string>& ret, string& tmp, vector<string>& phoneMap,int index)
//    {
//        if (index == digits.size())
//            ret.push_back(tmp);
//        else
//        {
//            char s = digits[index] - '0';
//            string letter = phoneMap[s];
//            for (auto x : letter)
//            {
//                tmp.push_back(x);
//                telepthone(digits, ret, tmp, phoneMap, index+1);
//                tmp.pop_back();
//            }
//
//        }
//    }
//    vector<string> letterCombinations(string digits) {
//        vector<string> phoneMap = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
//        int n = digits.size();
//        vector<string> ret;
//        if (n == 0) return ret;
//        string tmp;
//        int index = 0;
//        telepthone(digits, ret, tmp, phoneMap,index);
//        return ret;
//    }
//};

//int main()
//{
//	ios::sync_with_stdio(false);
//	cout.tie(0), cin.tie(0);
//	int q;
//	cin >> q;
//	vector<int> ret;
//	priority_queue<int> q1;
//
//	priority_queue<int, vector<int>, greater<>> unq1;
//	while (q--)
//	{
//		int a=0, b=0;
//		cin >> a;
//		if (a == 1)
//		{
//			cin >> b;
//			q1.push(b);
//			unq1.push(b);
//			ret.push_back(b);
//		}
//		else if (a == 2)
//		{
//			ret.pop_back();
//		}
//		else if (a == 3)
//		{
//			
//		}
//		else if (a == 4)
//		{
//			
//		}
//
//	}
//
//	return 0;
//}

//class Solution {
//public:
//    int MLS(vector<int>& arr) {
//        // write code here
//        sort(arr.begin(), arr.end());
//        int n = arr.size();
//        vector<int> tmp;
//        int i = 0;
//        while (i < n - 1)
//        {
//            while (i < n - 1 && arr[i] == arr[i + 1]) i++;
//            tmp.push_back(arr[i]);
//            i++;
//        }
//        int t = tmp.size();
//        int left = 0, right = 0, ret = 0;
//        while (left < t && right < t)
//        {
//            while (right < t && tmp[right] - tmp[left] == right - left)
//                right++;
//            int tmp = right - left;
//            ret = ret < tmp ? tmp : ret;
//            left = right;
//        }
//        return ret;
//    }
//};
//int main()
//{
//    Solution s;
//    vector<int> v = { 4,5,6,6,7 };
//    cout << s.MLS(v);
//    return 0;
//}